﻿@model Bricks.Site.Models.Purview.MenuActionAssignView

@{
    ViewBag.Title = "分配功能";
    Layout = "~/Views/Shared/_UserPage.cshtml";
}

@*实现对EasyUI的DataGird控件操作的JS代码*@
<script type="text/javascript">

    var actionTypeComboData;  //定义功能类型的下拉数据

    $(function () {

        initActionTypeComboData();  //初始化功能类型的下拉数据

        initTable();  //当页面首次刷新的时候执行的事件
    });

    ////初始化功能类型的下拉数据
    function initActionTypeComboData() {
        var _url = '/MenuInfo/InitActionTypeComboData';
        $.ajax({
            url: _url,
            type: 'get',
            async: false,//此处必须是同步
            dataTye: 'json',
            success: function (data) {
                actionTypeComboData = data;
            }
        })
    }

    //实现对DataGird控件的绑定操作
    function initTable(queryData) {
        $('#actionDataGrid').datagrid({   //定位到Table标签，Table标签的ID是actionDataGrid
            //   ActionInfo是控制器，GetData是控制器中获取用户数据的一个Action
            url: '/MenuInfo/GetMenuActionList?id=' + $("#hMenuID").val(),   //指向后台的Action来获取当前用户的信息的Json格式的数据
            //url: '/MenuInfo/GetMenuActionList',   //指向后台的Action来获取当前用户的信息的Json格式的数据
            //title: '功能管理',  //标识
            iconCls: 'icon-bricks',
            //width: 'auto',
            //height: 500,
            nowrap: true,
            autoRowHeight: false,
            striped: true,
            collapsible: true,
            pagination: false,
            //pageSize: 20,
            rownumbers: true,
            //sortName: 'ID',    //根据某个字段给easyUI排序
            //sortOrder: 'asc',
            remoteSort: false,
            idField: 'ID',
            checkOnSelect: true,
            selectOnCheck: true,
            singleSelect: true,
            queryParams: queryData,  //异步查询的参数
            toolbar: '#actionToolBar',
            columns: [[
                {
                    title: '@Html.LabelFor(model => model.Icon)', field: 'Icon', width: 50, sortable: false, align: "center",
                    formatter: function (value, row, index) {
                        if (value) {
                            return $.GetIcon(value);  //图标
                        }
                    }
                },
                {
                    title: '@Html.LabelFor(model => model.ActionName)', field: 'ActionName', width: 80, sortable: true,
                    editor: {
                        type: 'text',
                        options: {
                            required: true
                        }
                    }
                },
                {
                    title: '@Html.LabelFor(model => model.ActionCode)', field: 'ActionCode', width: 110, sortable: true,
                    editor: {
                        type: 'text',
                        options: {
                            required: true
                        }
                    }
                },
                {
                    title: '@Html.LabelFor(model => model.ActionTypeNum)', field: 'ActionTypeNum', width: 90, sortable: true,
                    editor: {
                        type: 'combobox',
                        options: {
                            valueField: 'ActionTypeNum',
                            textField: 'ActionTypeString',
                            data: actionTypeComboData,
                            required: true
                        }
                    }
                },
                //{ title: '@Html.LabelFor(model => model.OrderNo)', field: 'OrderNo', width: 60, sortable: true },
                {
                    title: '@Html.LabelFor(model => model.IsDeleted)', field: 'IsDeleted', width: 50, sortable: true, align: "center",
                    //formatter: function (value, row, index) {
                    //    return $.GetYesOrNo(value);  //是否禁用图标（是/否）
                    //},
                    //checkbox的options必须为1和0，当为true和false时不能正常显示
                    editor: {
                        type: 'checkbox',
                        options: {
                            on: 1,
                            off: 0
                        }
                    }
                },
                { title: '@Html.LabelFor(model => model.Description)', field: 'Description', width: 205, sortable: true, editor: 'text' },
                {
                    title: '操作', field: 'DeleteAction', width: 110, align: 'center',
                    formatter: function (value, row, index) {
                        return '<a href="#" onclick="Assign.Up(this)">向上</a>&nbsp;&nbsp;<a href="#" onclick="Assign.Down(this)">向下</a>&nbsp;&nbsp;<a href="#" onclick="Assign.Delete(this)">删除</a> ';
                    }
                }
            ]],
            onBeforeEdit: function (index, row) {
                row.editing = true;
                $('#actionDataGrid').datagrid('refreshRow', index);
            },
            onAfterEdit: function (index, row) {
                row.editing = false;
                $('#actionDataGrid').datagrid('refreshRow', index);
            },
            onCancelEdit: function (index, row) {
                row.editing = false;
                $('#actionDataGrid').datagrid('refreshRow', index);
            },
            onLoadSuccess: function (data) {
                var list = data.rows;
                for (var i = 0; i < list.length; i++) {
                    EditRow(i);
                }
            }
        });
    }

    function EditRow(currentIndex) {
        $('#actionDataGrid').datagrid('beginEdit', currentIndex);
    }

    var Assign = {
        //编辑行
        //EditRow: function (currentIndex) {
        //    $('#actionDataGrid').datagrid('beginEdit', currentIndex);
        //},

        //新增
        Add: function () {
            //添加新行到列表末尾
            $('#actionDataGrid').datagrid('appendRow', {
                //ActionName: "abc",
                ActionTypeNum: 1
            });
            //$.EasyuiSlide($('#actionDataGrid').datagrid('getRows').length - 1);
            EditRow($('#actionDataGrid').datagrid('getRows').length - 1);  //使新增行也处于编辑状态
        },

        //删除
        Delete: function (target) {

            //$.EasyuiSlide("删除选中行");  //测试

            var tr = $(target).closest('tr.datagrid-row');
            var index = parseInt(tr.attr('datagrid-row-index'));
            $('#actionDataGrid').datagrid('deleteRow', index);

            //$('#actionDataGrid').datagrid('acceptChanges');

            var list = $('#actionDataGrid').datagrid('getData').rows;
            for (var i = 0; i < list.length; i++) {
                EditRow(i);
            }
        },

        //向上
        Up: function (target) {
            //$('#actionDataGrid').datagrid('acceptChanges');
            Assign.Order(target, "Up");
        },

        //向下
        Down: function (target) {
            //$('#actionDataGrid').datagrid('acceptChanges');
            Assign.Order(target, "Down");
        },

        //向上或向下方法
        Order: function (target, order) {
            //var row = $("#actionDataGrid").datagrid("getSelected");
            //if (row) {
            //    //id：识别当前记录；pid：识别涉及调整的记录集合；order：向上或向下
            //    $.post("/ActionInfo/SetOrder", { id: row.ID, order: order }, function (result) {
            //        if (result.ResultType == 0) {
            //            $.EasyuiSlide(result.Message);  //成功则右下角提示
            //            ActionInfo.Reset();
            //            //$("#myTreeGrid").treegrid("selectRecord", row.ID);  //重新选中对应ID的记录（此处不生效，原因不明，后续探究）
            //        }
            //        else {
            //            $.EasyuiMsg(result.Message);  //失败则弹出框提示
            //        }
            //    });
            //}
            //else { $.EasyuiSlide(nullrowmsg); }

            var tr = $(target).closest('tr.datagrid-row');
            var index = parseInt(tr.attr('datagrid-row-index'));
            switch (order) {
                case "Up":
                    if (index == 0) {
                        $.EasyuiSlide("第一条数据无法上移");
                    }
                    else {
                        $('#actionDataGrid').datagrid('endEdit', index);  //必须结束编辑，否则已变更的数据不会同步更新
                        var selectedRow = $('#actionDataGrid').datagrid('getRows')[index];
                        if (selectedRow) {
                            $('#actionDataGrid').datagrid('insertRow', {
                                index: index - 1,
                                row: {
                                    ID: selectedRow.ID,
                                    Icon: selectedRow.Icon,
                                    ActionName: selectedRow.ActionName,
                                    ActionCode: selectedRow.ActionCode,
                                    ActionTypeNum: selectedRow.ActionTypeNum,
                                    IsDeleted: selectedRow.IsDeleted,
                                    Description: selectedRow.Description
                                }
                            });
                        }
                        EditRow(index - 1);  //使行处于编辑状态
                        $('#actionDataGrid').datagrid('deleteRow', index + 1);  //删除原来的行

                        $('#actionDataGrid').datagrid('selectRow', index - 1);  //选中那行
                        //$.EasyuiSlide("Up");
                    }
                    break;
                case "Down":
                    if (index == $('#actionDataGrid').datagrid('getRows').length - 1) {
                        $.EasyuiSlide("最后一条数据无法下移");
                    }
                    else {
                        $('#actionDataGrid').datagrid('endEdit', index);  //必须结束编辑，否则已变更的数据不会同步更新
                        var selectedRow = $('#actionDataGrid').datagrid('getRows')[index];
                        if (selectedRow) {
                            $('#actionDataGrid').datagrid('insertRow', {
                                index: index + 2,
                                row: {
                                    ID: selectedRow.ID,
                                    Icon: selectedRow.Icon,
                                    ActionName: selectedRow.ActionName,
                                    ActionCode: selectedRow.ActionCode,
                                    ActionTypeNum: selectedRow.ActionTypeNum,
                                    IsDeleted: selectedRow.IsDeleted,
                                    Description: selectedRow.Description
                                }
                            });
                        }
                        EditRow(index + 2);  //使行处于编辑状态
                        $('#actionDataGrid').datagrid('deleteRow', index);  //删除原来的行
                        $('#actionDataGrid').datagrid('selectRow', index + 1);  //选中那行
                        //$.EasyuiSlide("Down");
                    }
                    break;
            }
        },

        //引入功能（从功能定义中勾选引入）
        Import: function () {
            //$.EasyuiSlide("引入功能");

            Assign.Mutual("引入现有功能", "/MenuInfo/Import");
        },

        //实体操作
        Mutual: function (title, href) {
            $.ModelDialog({
                dialogid: "importDialog",
                title: title, href: href, width: 430,
                handler: function () {
                    //$.ModelForm({
                    //    validate: true, button: $(this),
                    //    id: "#form-importAction",
                    //    url: "/MenuInfo/ImportPost",
                    //    success: function (result) {
                    //        //Assign.Reset();
                    //    }
                    //});

                    //debugger;

                    var data = $('#importActionDataGrid').datagrid('getChecked');  //取得所有数据
                    //var dataJson = JSON.stringify(data);
                    //var effectRow = new Object();
                    //effectRow["Data"] = dataJson;

                    //$.post("/MenuInfo/ImportPost", effectRow, function (result) {
                    //    try {
                    //        //result = JSON.parse(result);
                    //        if (result.ResultType == 0) {  //ResultType是在OperationResultType定义的，0表示Success成功
                    //            $.EasyuiSlide(result.Message);  //弹出右下角提示
                    //            $("#importDialog").dialog("destroy");  //关闭当前窗体
                    //        }
                    //        else {
                    //            //如果失败，还是使每一行处于编辑状态
                    //            //var list = $('#actionDataGrid').datagrid('getData').rows;
                    //            //for (var i = 0; i < list.length; i++) {
                    //            //    //Assign.EditRow(i);
                    //            //    $('#actionDataGrid').datagrid('beginEdit', i);
                    //            //}
                    //            $.EasyuiMsg(result.Message);  //弹出提示窗体
                    //        }
                    //    } catch (e) { $.Error(result); }
                    //});

                    //Modify By Luozx 2014-02-14：此处需要补充属性
                    if (data != null && data.length > 0) {
                        for (var i = 0; i < data.length; i++) {
                            $('#actionDataGrid').datagrid('appendRow', {
                                ActionID: data[i].ID,
                                ActionName: data[i].ActionName,
                                ActionCode: data[i].ActionCode,
                                ActionTypeNum: data[i].ActionTypeString == "权限标识" ? 0 : 1,
                                //ActionTypeNum: 1,
                                Icon: data[i].Icon,
                                Description: data[i].Description,
                                //......其他属性
                            });
                            EditRow($('#actionDataGrid').datagrid('getRows').length - 1);  //使新增行也处于编辑状态
                        }
                    }
                    $("#importDialog").dialog("destroy");  //关闭当前窗体
                },
                onLoad: function () {
                    //Assign.FormInit();
                }
            });
        },

        //弹窗初始化
        FormInit: function () {
            //定义功能类型枚举下拉
            //$("#ActionTypeNum").combobox({
            //    editable: false, width: 155, panelHeight: "auto",
            //    data: [
            //        { value: "0", text: "权限标识" },
            //        { value: "1", text: "功能按钮" }
            //    ]
            //});
        },

        //重置
        Reset: function () {
            $.messager.confirm('操作提示', "确认重置列表到初始状态吗？", function (r) {
                if (r) {
                    $("#actionDataGrid").datagrid("reload");
                }
            })
        }
    }
</script>

<!--面板（从数据库取得菜单名称和图标等）-->
<div class="easyui-panel" title="功能列表">
    <form id="form-menuAction" method="post">
        <!--数据列表（根据JS构造数据）-->
        <table id="actionDataGrid" style="height: 400px;"></table>
        <div id="actionToolBar">
            <a href='javascript:void(0)' class='easyui-linkbutton' onclick='Assign.Add()' data-options='plain:true,iconCls:"icon-add"'>新增</a>
            @*<a href='javascript:void(0)' class='easyui-linkbutton' onclick='Assign.Modify()' data-options='plain:true,iconCls:"icon-big_pencil"'>修改</a>*@
            @*<a href='javascript:void(0)' class='easyui-linkbutton' onclick='Assign.Delete()' data-options='plain:true,iconCls:"icon-cancel"'>删除</a>*@
            @*<a href='javascript:void(0)' class='easyui-linkbutton' onclick='Assign.Disable()' data-options='plain:true,iconCls:"icon-close_square"'>禁用</a>*@
            @*<a href='javascript:void(0)' class='easyui-linkbutton' onclick='Assign.Enable()' data-options='plain:true,iconCls:"icon-done_square"'>启用</a>*@
            @*<a href='javascript:void(0)' class='easyui-linkbutton' onclick='Assign.Up()' data-options='plain:true,iconCls:"icon-up"'>向上</a>*@
            @*<a href='javascript:void(0)' class='easyui-linkbutton' onclick='Assign.Down()' data-options='plain:true,iconCls:"icon-down"'>向下</a>*@
            <a href='javascript:void(0)' class='easyui-linkbutton' onclick='Assign.Import()' data-options='plain:true,iconCls:"icon-preferences"'>引入已定义功能</a>
            <a href='javascript:void(0)' class='easyui-linkbutton' onclick='Assign.Reset()' data-options='plain:true,iconCls:"icon-reload"'>重置</a>
        </div>
    </form>
</div>
<input type="hidden" id="hMenuID" value="@ViewBag.MenuID" />